import axios from 'axios'
import vm from '@/main.js'
import { globalSuccessToast } from '@/settings'
import { getToken } from '@/utils/jsCookie'
import { Dialog } from 'vant';
import { AppConfig } from '@/config/app.config.js'

const service = axios.create({
    baseURL: AppConfig.baseURL,        // url = base url + request url
    withCredentials: false,                       // 设置是否在请求中携带cookie
    timeout: 60000,                               // 请求超时时间
})

// request interceptor（请求拦截器）
service.interceptors.request.use(
    config => {
        vm.$Loading.show()
        // 给config统一配置属性
        let token = getToken();
        // config.headers['Content-Type'] = 'multipart/form-data';
        // config.headers['authorization'] = `eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJleHAiOjE2MDYyODYxOTgsInVzZXJJZCI6IjEzMDkzMzAzNzMwMzk1MzgxNzgifQ.IraLhhHvj5RKuBt-swbpoLJforodq_OVEtbQopE-hFk`;    // 带上登录验证token
        // config.headers['menuId'] = 10014;    // 带上登录验证token
        config.headers['Authorization'] = 'Bearer ' + token;    // 带上登录验证token
        return config;
    },
    error => {
        return Promise.reject(error)
    }
)

//response （响应拦截器）
service.interceptors.response.use(
    response => {
        vm.$Loading.hidden()
        // console.log(response, '响应拦截器内')
        const res = response.data
        console.log('响应拦截器内 response: ', response)
        const code = response.status
        if (code !== 200) {
            vm.$Toast.error(res)
            return Promise.reject(new Error((res.error) || 'Error'))
        } else {
            return Promise.resolve(res)
            // if (res.code) { // code=null时，返回正常无报错
            //     if (res.code != 'CheckConfirm') {
            //         Dialog({ message: (res && res.message) || '错误！' })
            //     }
            //     return Promise.reject(res)
            // }else{
            //     if (!res.success) {
            //         Dialog({ message: (res && res.message) || '错误！' })
            //     }
            //     return Promise.resolve(res)
            // }
        }
    },
    error => {
        const err = error.response;
        vm.$Loading.hidden()
        // if (err.status && err.status == 401) {       //拦截401，代表登陆失效，触发页面刷新后再触发路由拦截，拦截到重新登录
        //     // router.push('/login')      //如果项目存在登录验证，应该在这里返回登录页面重新登录；
        //     console.log('response status is 401')
        // }
        console.log(err, Dialog, 56)
        // vm.$Toast.error(err.data.message)
        Dialog({ message: '错误:' + ((err.data && err.data.message) || '请求失败！') })
        return Promise.reject(err.data)
    }
)

export default service
